// 导入接口 
import { getLeftNav, getTopNav } from '../api/admin'
import { createSlice } from '@reduxjs/toolkit';
import LazyLoad from '../utils/LazyLoad';


// 定义初始化状态
const initialState = {
    // 用户信息
    userInfo: { name: '111', avatar: '222' },
    // 左侧一级菜单列表
    leftOneList: [],
    // 左侧二级菜单列表
    leftTwoList: [],
    // 左侧菜单路由 
    leftRouteList: [],
}

// 定义切片 
const authSlice = createSlice({
    name: 'auth',
    initialState,
    reducers: {
        // 设置用户信息
        setUserInfo(state, action) {
            state.userInfo = action.payload
        },
        // 设置左侧一级菜单列表
        setLeftOneList(state, action) {
            state.leftOneList = action.payload
        },
        // 设置左侧二级菜单列表
        setLeftTwoList(state, action) {
            state.leftTwoList = action.payload
        },
        // 设置左侧菜单路由
        setLeftRouteList(state, action) {
            state.leftRouteList = action.payload
        }
    }
})

// 导出切片
export default authSlice.reducer;
// 导出action
export const { setUserInfo, setLeftOneList, setLeftTwoList, setLeftRouteList } = authSlice.actions;



// 导出:异步获取并存储菜单方法 - - - - - 一级菜单
export const getMenuOne = (arr: any) => async (dispatch: any) => {
    // console.log("拿到的菜单数据一级菜单", arr)
    var oneList = filterOne(arr)
    // 更新一级菜单
    dispatch(setLeftOneList(oneList))
    var RouterList = filterRouterList(arr)
    // 更新路由
    dispatch(setLeftRouteList(RouterList))

}

// 导出:异步获取并存储菜单方法 - - - - - 二级菜单
export const getMenuTwo = (arr: any) => async (dispatch: any) => {
    // console.log("拿到的菜单数据二级菜单", arr)
    var oneList = filterOne(arr)
    // 更新二级菜单
    dispatch(setLeftTwoList(oneList))
}

// 筛选出一级菜单
function filterOne(list: any) {
    var arr: any = []
    for (var i = 0; i < list.length; i++) {
        arr[i] = {
            label: list[i].name,
            key: list[i].href || list[i].id,
        }
    }
    return arr
}

// 设置路由的方法
function filterRouterList(list: any) {
    // return list
    var arr: any = [];
    for (var i = 0; i < list.length; i++) {
        // 如果有子路由就 递归继续筛选
        if (list[i].childs) {
            arr = arr.concat(filterRouterList(list[i].childs))
        } else {
            arr[i] = {
                // 初了/#/不要，截取剩下有用的
                path: list[i].href.slice(9),
                // 文件路径
                element: LazyLoad(list[i].href.slice(2).split('.')[0]),
            }
        }
    }
    return arr
}
